package org.leon.dao;

import org.leon.pojo.Resume;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

/**
 * 一个符合 spring jpa 规范的接口需要继承 JpaRepository 和 JpaSpecificationExecutor 两个接口
 *
 * JpaRepository<Resume, Integer> 接口：泛型分别为实体类和实体类的注解类型
 *      实现了基本的 CURD 方法
 * JpaSpecificationExecutor<Resume> 接口：泛型为实体类
 *      封装了较复杂的查询：分页、排序等
 */
public interface ResumeDao extends JpaRepository<Resume, Integer>, JpaSpecificationExecutor<Resume> {

    /**
     * JPQL 查询
     */
    @Query(value = "from Resume where id=?1 and name=?2")
    Resume findByJpql(Integer id, String name);

    /**
     * 原生SQL查询
     */
    @Query(value = "select * from tb_resume where name like ?1 and address like ?2", nativeQuery = true)
    List<Resume> queryBySql(String name, String address);

    /**
     * 命名规则方式查询
     */
    List<Resume> findByNameLikeAndAddress(String name, String address);

}
